<?php
/**
 * ============================================================================
 * @package Forum
 * @author Andy
 * @version 15:55
 * @link https://sjdphp.com
 * ----------------------------------------------------------------------------
 */

namespace app\common\lib;


class CommonClass
{
    /** 快递类库
     * @return string[]
     */
    public static function logisticsClass(){
        return [
            'ali' => 'app\common\lib\logistics\AliLogistics',
        ];
    }

    /** 短信类库
     * @return string[]
     */
    public static function smsClass(){
        return [
            'ali' => 'app\common\lib\sms\AliSmS',
        ];
    }

    /** 邮箱类库
     * @return string[]
     */
    public static function mailerClass(){
        return [
            'wy' => 'app\common\lib\mailer\WYMailer',
            'qq' => 'app\common\lib\mailer\QQMailer'
        ];
    }

    /** 图片类库
     * @return string[]
     */
    public static function imgClass(){
        return [
            'localhost' => 'app\common\lib\image\LocalhostImg',
            'qiniu'     => 'app\common\lib\image\QiNiuImg',
        ];
    }


    /** 返回类库的实例或地址
     * @param $type string 调用的第三方名称
     * @param $class string 类库
     * @param array $param 参数
     * @param bool $needInstance 是否需要实例化
     */
    public static function initClass($type,$class,$param= [],$needInstance = false){
        // 判断是否存在第三方类库
        if(!array_key_exists($type,$class)){
            return false;
        }
        // 获取类库名称及路由
        $className = $class[$type];

        // 判断是否需要实例化
        return $needInstance == true ? (new \ReflectionClass($className))->newInstanceArgs($param) : $className;
    }
}